class duilie {
    private int[] elements;
    private int front;
    private int rear;
    private int size;
    private int capacity;

    // 构造函数，初始化队列容量
    public duilie(int capacity) {
        this.capacity = capacity;
        elements = new int[capacity];
        front = 0;
        rear = 0;
        size = 0;
    }

    // 判断队列是否已满
    public boolean isFull() {
        return size == capacity;
    }

    // 判断队列是否为空
    public boolean isEmpty() {
        return size == 0;
    }

    // 入队操作
    public void enqueue(int element) {
        if (isFull()) {
            System.out.println("队列已满，无法入队，数据 " + element + " 不能进入队列");
            return;
        }
        elements[rear] = element;
        rear = (rear + 1) % capacity;
        size++;
    }

    // 出队操作
    public int dequeue() {
        if (isEmpty()) {
            throw new RuntimeException("队列已空，无法出队");
        }
        int element = elements[front];
        front = (front + 1) % capacity;
        size--;
        return element;
    }
}

public class Main {
    public static void main(String[] args) {
        duilie queue = new duilie(8);

        // 依次把数据12，23，34，45，56进入队列之中
        queue.enqueue(12);
        queue.enqueue(23);
        queue.enqueue(34);
        queue.enqueue(45);
        queue.enqueue(56);

        // 把67，78，89，100 依次进入队列之中
        queue.enqueue(67);
        queue.enqueue(78);
        queue.enqueue(89);
        queue.enqueue(100);  // 这里会显示队列已满，因为容量是8

        // 将队列中数据前4位出队，打印出来
        System.out.println("队列中前4位出队的数据:");
        for (int i = 0; i < 4; i++) {
            System.out.println(queue.dequeue());
        }

        // 将尚未出队的数据打印出来
        System.out.println("尚未出队的数据:");
        while (!queue.isEmpty()) {
            System.out.println(queue.dequeue());
        }
    }
}